import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'

// 加载自动生成路由插件
import Pages from 'vite-plugin-pages';

// 加载模板布局插件
import Layouts from 'vite-plugin-vue-layouts';

// 引入nodejs路径模块
import path from 'path'

//引入自动导入依赖的插件
import AutoImport from 'unplugin-auto-import/vite'

// 可以自动引入页面组件components
import Components from 'unplugin-vue-components/vite'

// 引入定义的登录效验的路由列表
import rules from './src/routers/rules'


// https://vite.dev/config/
export default defineConfig({
  server: {
    proxy: {
      '/shop': {
        // target: 'http://www.fast.com/shop',
        target: 'http://aaafast.varres.cn/shop',
        changeOrigin: true, //允许跨域请求
        rewrite: (path) => path.replace(/^\/shop/, ''), //对url重写
      }
    }
  },
  resolve:{
    alias: {
      "@": path.resolve(__dirname, "src"),
      "components": path.resolve(__dirname, "src/components"),
      'vue': 'vue/dist/vue.esm-bundler.js' // 定义vue的别名，如果使用其他的插件，可能会用到别名
    }
  },
  plugins: [
    vue(),
    //自动生成路由的插件
    Pages({
      dirs: 'src/views/', //需要生成路由的组件目录
      exclude: ['src/components/*.vue'], // 排除在外的目录，即所有 components 目录下的 .vue 文件都不会生成路由
      //路由拓展判断
      extendRoute(route, parent)
      {
        //查找不需要登录的路由
        if(rules.includes(route.path))
        {
          //如果这个路由地址 在 数组中就说明不需要登录
          return route
        }

        //给需要登录验证的路由添加meta属性
        return {
          ...route,
          meta: {IsLogin: true}, //如果你发现你的路由有IsLogin属性就说明他是需要登录的
        }
      }
    }),
    Layouts({
      layoutsDirs: 'src/layout', // 布局模板文件存放目录
      defaultLayout: 'index', // 默认布局，对应 src/layout/index.vue
    }),
    AutoImport({
      //设置自动导入的依赖包有哪些
      imports: ['vue', 'vue-router', 'pinia'],
    }),
    Components({
      // 指定组件位置，默认是src/components
      dirs: ['src/components'],
      // ui库解析器
      // resolvers: [ElementPlusResolver()],
      extensions: ['vue'],
    })
  ],
  
})
